<?php
class Solicitudes_DetalleController extends Zend_Controller_Action {
	
	private $tabs;
	private $nav;
	private $infoUsuario;
	private $codsolicitud;
	private $tiposolicitud;
		
	public function init() {
		$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $this->tiposolicitud = $sesionSolicitud->tiposolicitud;
		
		$accion = $this->_getParam("accion");
        if ($accion=="crear"){
	        $sesionSolicitud->codsolicitud = "";
        }
		
		$this->codsolicitud = $sesionSolicitud->codsolicitud;
    	
//		if(empty($this->codsolicitud) && $this->getRequest()->getActionName()!="basica") {
//			$this->_helper->redirector("lista","index");
//		}
		if(!empty($this->codsolicitud)) {
			$Solicitudes= new Solicitudes_Model_Solicitudes();
			$this->infoSolicitud = $Solicitudes->cargarDatos ( $this->codsolicitud );
			$this->view->infoSolicitud = $this->infoSolicitud;
		}
	}
	
	public function indexAction() {
	    if (!in_array($this->tiposolicitud,array(5,6))){
		    $this->_forward("lista");
	    }
	}

	public function basicaAction() {
	    $codsolicitud = $this->infoSolicitud["codsolicitud"];
	    
		$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion("Listado de procesos", "/solicitudes/index/lista","Listado de procesos");
		$this->nav->agregar_navegacion("Información de la solicitud :: {$codsolicitud}", "");
		$this->view->nav = $this->nav;
			    		
    		$form = new Solicitudes_Form_CrearSolicitud();
    		$form->setAction ( $this->view->baseUrl("/solicitudes/detalle/basica") );
    		$detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
            $datos = $detalleSolicitud->getProcesosSolicitud($this->infoSolicitud["codsolicitud"]);
            $this->view->form = $form;
            $this->view->datos = $datos;
            //lo trabjas
               
            $Solicitudes= new Solicitudes_Model_Solicitudes();
            if ($Solicitudes->verificarCompletitud($this->infoSolicitud["codsolicitud"])){
//          if (true){
                $sesionTabBoton = new Zend_Session_Namespace("TABBOTON");
                $sesionTabBoton->unsetAll();
    		    $form2 = new Solicitudes_Form_Adjuntos();
    		    $this->view->form2 = $form2;
    		    if ($this->infoSolicitud["coddocumento"]){
                    $adjunto = new Generales_Model_Documentos();
                    $this->view->adjunto = $adjunto->cargarDatos($this->infoSolicitud["coddocumento"]);
    		    }
    		}
	}
	
	public function programasAction() {
		$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion("Listado de procesos", "/solicitudes/index/lista","Listado de procesos");
		if (!empty($this->codsolicitud))$this->nav->agregar_navegacion("Información de la solicitud :: {$this->codsolicitud}", "/solicitudes/detalle/basica");
		$this->nav->agregar_navegacion("Crear proceso", "");
		$this->view->nav = $this->nav;
	    $Solicitudes = new Solicitudes_Model_DetalleSolicitud();
	    $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
//        Zend_Debug::dump($sesionSolicitud->tiposolicitud);
	    $this->view->datos = $Solicitudes->getProgramasIES(App_User::getCodigoSede(),$sesionSolicitud->tiposolicitud);
	}
	
	public function asignarseleccionAction(){
        $seleccionados = $this->_getParam("seleccionados", array());
		if(count($seleccionados)==0) {
			$this->view->priorityMessenger("Debe seleccionar por lo menos un registro", "warning");
			$this->_helper->_redirector("programas");
		}
		try {
		    $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
			$detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
			$detalleSolicitud->asignarProgramasSolicitud($seleccionados, $sesionSolicitud->tiposolicitud);
			$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
			$this->_helper->_redirector("programas");
		}
		$this->_helper->_redirector("lista","index");
	}
	
	public function desasignarseleccionAction(){
        $seleccionados = $this->_getParam("seleccionados", array());
		if(count($seleccionados)==0) {
			$this->view->priorityMessenger("Debe seleccionar por lo menos un registro", "warning");
			$this->_helper->_redirector("basica");
		}
		try {
			$detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
			$detalleSolicitud->desasignarProgramasSolicitud($this->infoSolicitud["codsolicitud"], $seleccionados);
			$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
		} catch (Exception $e) {
//			$this->view->priorityMessenger($e->getMessage(), "error");
			$this->view->priorityMessenger("El programa no puede ser desasignado porque contiene información relacionada en el proceso.", "error");
		}
		$this->_helper->_redirector("basica");
	}
	
	public function ingresarAction() {
    	$sesionPrograma = new Zend_Session_Namespace("PROGRAMA");
    	$sesionPrograma->codprograma = $this->_getParam("codprograma");
    	$sesionPrograma->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "infoprograma");
    }
    
    public function guardaradjuntoAction(){
        $form = new Solicitudes_Form_Adjuntos();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
			    $datos_adj = $form->archivo->getFileInfo();
			    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
			    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
			    $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
			    
			    if ($form->archivo->receive()) {
				     $sintesisTable = new Solicitudes_Model_Solicitudes();
			         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
			         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
			         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
			         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
			         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
					 $datos_archivo["codsolicitud"] = $this->infoSolicitud["codsolicitud"];
					 					     
			         if ($this->infoSolicitud["coddocumento"]){
			             $documentoTable = new Generales_Model_Documentos();
			             $documentoTable->eliminarDocumento($this->infoSolicitud["coddocumento"]);
			         }

					 $sintesisTable->guardarAdjuntoSolicitud($datos_archivo);
					 $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			    }
                } catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        }
		$this->_helper->redirector("basica");
	}
	
   public function finalizarsolicitudAction() {
        try {
            $Solicitudes= new Solicitudes_Model_Solicitudes();
            $Solicitudes->finalizarCondicionesIniciales($this->infoSolicitud["codsolicitud"]);
            $this->view->priorityMessenger("La solicitud finalizó el proceso de condiciones iniciales correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("index", "index", "default");
    }
}

